package model

import (
	"gorm.io/gorm"
	"time"
	"video-srv/basic/config"
)

type Protobuf struct {
	Id              uint32         `gorm:"column:id;type:int UNSIGNED;comment:审核ID;primaryKey;not null;" json:"id"`                                               // 审核ID
	VideoId         int32          `gorm:"column:video_id;type:int;comment:视频ID;not null;" json:"video_id"`                                                       // 视频ID
	ProtobufId      int32          `gorm:"column:protobuf_id;type:int;comment:审核员ID 0-默认未处理;not null;default:0;" json:"protobuf_id"`                              // 审核员ID 0-默认未处理
	ProtobufContent int8           `gorm:"column:protobuf_content;type:tinyint(1);comment:审核结果  0-待审核 1-审核通过 2-审核拒绝;not null;default:0;" json:"protobuf_content"` // 审核结果  0-待审核 1-审核通过 2-审核拒绝
	ProtobufViews   string         `gorm:"column:protobuf_views;type:varchar(60);comment:审核意见;not null;" json:"protobuf_views"`                                   // 审核意见
	CreatedAt       time.Time      `gorm:"column:created_at;type:datetime(3);comment:审核时间;not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`              // 审核时间
	UpdatedAt       time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt       gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (p *Protobuf) TableName() string {
	return "proto"
}

func (p *Protobuf) AddProtobuf() error {
	return config.DB.Create(&p).Error
}

// 审核结果  0-待审核 1-审核通过 2-审核拒绝
func (p *Protobuf) FindProtobufContent(status int) (list []*Protobuf, err error) {
	err = config.DB.Where("protobuf_content = ? ", status).Find(&list).Error
	return
}

func (p *Protobuf) FindProtobufContentByVideoId(videoId int) error {
	return config.DB.Where("video_id = ? ", videoId).Find(&p).Error
}

// 处理审核
func (p *Protobuf) HandleProtobuf() error {
	return config.DB.Updates(&p).Error
}
